// 权限拦截 导航守卫 路由守卫

// 引入store router
import store from "@/store"
import router from "@/router";
//引入消息提示
import {Message} from "element-ui";
// 定义白名单(不需要登录即可访问的页面路由路径)
const whiteList = ['/404', '/login']

// 导入进度条
import NProgress from  'nprogress'
import 'nprogress/nprogress.css'

//添加导航守卫
//   前置守卫
router.beforeEach(async (to,from,next)=>{
  //开启进度条
  NProgress.start()
  //判断是否 有token
  if(store.getters.token){
    // token存在
    //判断userInfo中是否存在用户信息
    if(!Object.keys(store.getters.userInfo).length){
      //说明没有用户信息
      // 需重新发送请求获取
      await  store.dispatch('user/getUserInfo')
    }

    // 判断访问的页面是否是login
    if(to.path === '/login'){
      // 已经登录  访问的页面是login  跳转到主页
      Message({
        type:"info",
        message:'检测到你已登录.无需重复登录'
      })
      next('/')
    }else{
      //已经登录访问的不是login  放行
      next()
    }
  }else{
    // token不存在
    //访问的页面是否在白名单中
    if(whiteList.includes(to.path)){
      //存在  直接放行
      next()
    }else{
      Message({
        type:"info",
        message:'检测到你未登录.请先登录'
      })
      // 不存在  跳转登录页面
      next({
        path:'/login',
        query:{
          toPath:to.path
        }
      })
    }
  }
  //关闭进度条
  NProgress.done()
})

//后置钩子:路由加载完毕后执行
router.afterEach((to,from)=>{
  //关闭进度条
  NProgress.done()
})
